package com.string;

import com.google.common.base.CaseFormat;
import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import org.junit.Test;

import java.util.Arrays;

public class StringDemo {

    @Test
    public void test01(){
        // Joiner也可以连接对象,默认是连接toString方法返回值
        //跳过null
        String join = Joiner.on(",").skipNulls().join(Arrays.asList(1, 2, null, 4, 5));
        System.out.println(join);//1,2,4,5
        // 使用默认字符串代替null
        String join1 = Joiner.on(",").useForNull("null").join(Arrays.asList(1, 2, null, 4, 5));
        System.out.println(join1); //1,2,null,4,5
    }

    @Test
    public void test02(){
        //根据字符或者字符串分割
        String str01=",a ,,b , c ,";
        // omitEmptyStrings: 忽略空字符串
        Splitter.on(',').omitEmptyStrings().split(str01).forEach(System.out::println);
        //根据字符匹配器
        String str02=",a ,,b , c ,";
        // trimResults 移除分割后的字符的两边的空白字符串
        Splitter.on(CharMatcher.is(',')).trimResults().split(str02).forEach(System.out::println);
        //正则分割
        String str03="aa,1bb2fg,3vs5,vsd,";
        // 移除分割后的字符指定的字符串
        Splitter.onPattern("\\d").trimResults(CharMatcher.is(','))
                .splitToList(str03)  //转化为list
                .forEach(System.out::println);
        //长度分割
        String str04="hahahehenini";
        //limit, 限制拆分的数量,指定数量小于正常拆分,则全部堆积到最后一个字符串
        Splitter.fixedLength(4).limit(2).split(str04).forEach(System.out::println);//只分成两个
        //haha
        //hehenini
    }

    @Test
    public void test03(){
        //CaseFormat被用来方便地在各种ASCII大小写规范间转换字符串——比如，编程语言的命名规范
        /**
         * 五种格式
         * LOWER_CAMEL	houZheng
         * LOWER_HYPHEN	ho-zheng
         * LOWER_UNDERSCORE	hou_zheng
         * UPPER_CAMEL	UpperCamel  HouZheng
         * UPPER_UNDERSCORE	HOU_ZHENG
         */
        //使用, to方法,从一种转换为另一种,比如下面: 从LOWER_UNDERSCORE转换为LOWER_CAMEL
        System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "hou_zheng"));//houZheng
    }

}
